package com.dayangxiaoen.pms.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.ArrayList;

/**
 * @author dayangxiaoen
 *
 * 商品详细信息的实体类
 *
 * product_id	商品id	bigint	not null	主键
 * product_picture	商品头图 （链接）	varchar(100)	not null
 * product_type	商品类型	varchar(50)	not null
 * peoduct_category	商品分类	varchar(50)	not null
 * product_details_id	外键）商品详情id	bigint	not null
 * product_supplier	外键）供应商id	bigint	not null	供应商关联外表
 * product_owner_state	店小二操作的状态(包括已编辑,已提交审核)	int	not null	暂不使用
 * product_check_state	商品的审核状态（包括未审核,审核通过,审核驳回）	int	not null
 * product_online_state	商品的上线状态(包括未上线,已上线,已下线)	int	not null
 * product_price	商品价格	demical	not null
 * create_time	创建时间	dateTime	not null
 * update_time	修改时间	dateTime	not null
 * user_id	操作人	bigint	not null	这个操作人应该指创建这件商品的人
 * remark	备注	text
 *
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName("product_basic_info")
public class Product {

    @TableId(type = IdType.ASSIGN_ID)
    private Long productId;

    // 商品图片的 超链接地址
    private String productPicture;

    // 商品的 type
    private String productType;

    // 商品的 category
    private String productCategory;

    // 商品 的 详情
    // 这里是一个引用类型
    private Long productDetailsId;
    @TableField(exist = false)
    private  ProductDetail productDetail;

    // 商品 的 供应商
    // 这里是一个引用类型
    private Long productSupplier;
    @TableField(exist = false)
    private Supply supply;

    // 店小二操作的状态(包括已编辑,已提交审核)
    private int productOwnerState;

    // 商品的审核状态（包括未审核,审核通过,审核驳回）
    private int productCheckState;

    // 商品的上线状态
    private int productOnlineState;

    // 商品的价格
    // 这个price 字段从来没有使用过 不必担心
    private Double productPrice;

    // 商品创建时间
    private LocalDateTime createTime;

    // 商品修改时间
    private LocalDateTime updateTime;

    // 商品所属人
    // 这里是一个引用类型
    private Long userId;
    @TableField(exist = false)
    private User user;

    // 商品备注
    private String remark;

    // 商品 黄金会员兑换权益
    @TableField(exist = false)
    private ArrayList<RaiType> raiType;


}
